package Vista;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

import remote.BusinessDelegate;
import Interfaz.SucursalDTO;
import Persistencia.RepositoryException;
import Servicios.ServiceException;
import Util.Contexto;

@SuppressWarnings("unused")
public class AltaSucursal extends JPanel{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel labelNombre;
	private JButton buttonCancelar;
	private JButton buttonCrear;
	private JTextField textNombre;
	private static AltaSucursal instancia;
	private JLabel lblnumeroSucursal;
	private JTextField textFieldnumeroSucursal;
	private JLabel lblid;
	private JTextField textFielid;
	private JLabel lblcalle;
	private JTextField textFieldcalle;
	private JLabel lblnumero;
	private JTextField textFieldnumero;
	private JLabel lblpais;
	private JTextField textFieldpais;
	private JLabel lblpiso;
	private JTextField textFieldpiso;
	private JLabel lbldepartamento;
	private JTextField textFielddepartamento;
	private JLabel lblentreCalle1;
	private JTextField textFieldentreCalle1;
	private JLabel lblentreCalle2;
	private JTextField textFieldentreCalle2;
	private JLabel lbllocalidad;
	private JTextField textFieldlocalidad;
	private JLabel lblprovincia;
	private JTextField textFieldprovincia;
	private JLabel lblcodigoPostal;
	private JTextField textFieldcodigoPostal;
	private JLabel lbllatitud;
	private JTextField textFieldlatitud;
	private JLabel lbllongitud;
	private JTextField textFieldlongitud;
	@SuppressWarnings("rawtypes")
	
	
	public static AltaSucursal getInstancia()
	{
		if (instancia == null)
			instancia = new AltaSucursal();
		return instancia;
	}

	
	public AltaSucursal() {
		super();
		initGUI();
	}

	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	private void initGUI() {
		try {

			this.setLayout(null);
			{
				labelNombre = new JLabel();
				this.add(labelNombre);
				labelNombre.setText("Nombre sucursal:");
				labelNombre.setBounds(105, 20, 141, 25);
			}
			
			
			{
				textNombre = new JTextField();
				this.add(textNombre);
				textNombre.setBounds(258, 20, 119, 21);
				textNombre.setSize(180, 26);
			}
			{
				buttonCrear = new JButton();
				this.add(buttonCrear);
				buttonCrear.setText("Crear ");
				buttonCrear.setBounds(90, 630, 125, 32);
				buttonCrear.setSize(150, 40);
				buttonCrear.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						
				
						if(guardarSucursal()) {
							notificarMensaje("La sucursal fue creada con exito");
							clearFields();
							SwingUtilities.windowForComponent(AltaSucursal.this).dispose();
						} else {
							notificarError("Ocurrio un error, no pudo guardarse la sucursal");
						}
						
					}
				});
			}
			{
				buttonCancelar = new JButton();
				this.add(buttonCancelar);
				buttonCancelar.setText("Cancelar");
				buttonCancelar.addActionListener(new ActionListener(){

					@Override
					public void actionPerformed(ActionEvent arg0) {
						clearFields();
						SwingUtilities.windowForComponent(AltaSucursal.this).dispose();
						
					}
					
				});
				buttonCancelar.setBounds(302, 630, 125, 30);
				buttonCancelar.setSize(150, 40);
				{
					lblnumeroSucursal = new JLabel();
					lblnumeroSucursal.setText("Num. sucursal:");
					lblnumeroSucursal.setBounds(105, 60, 110, 25);
					this.add(lblnumeroSucursal);
				}
				{
					textFieldnumeroSucursal = new JTextField();
					textFieldnumeroSucursal.setBounds(258, 60, 119, 26);
					textFieldnumeroSucursal.setSize(180, 26);
					this.add(textFieldnumeroSucursal);
				}
				{
					lblid = new JLabel();
					lblid.setText("Id:");
					lblid.setBounds(105, 100, 110, 25);
					this.add(lblid);
				}
				{
					textFielid = new JTextField();
					textFielid.setBounds(258, 100, 119, 26);
					textFielid.setSize(180, 26);
					this.add(textFielid);
				}
				{
					lblcalle = new JLabel();
					lblcalle.setText("Calle:");
					lblcalle.setBounds(105, 140, 110, 25);
					this.add(lblcalle);
				}
				{
					textFieldcalle = new JTextField();
					textFieldcalle.setBounds(258, 140, 119, 26);
					textFieldcalle.setSize(180, 26);
					this.add(textFieldcalle);
				}
				{
					lblnumero = new JLabel();
					lblnumero.setText("Numero:");
					lblnumero.setBounds(105, 180, 110, 25);
					this.add(lblnumero);
				}
				{
					textFieldnumero = new JTextField();
					textFieldnumero.setBounds(258, 180, 119, 26);
					textFieldnumero.setSize(180, 26);
					this.add(textFieldnumero);
				}
				{
					lblpais = new JLabel();
					lblpais.setText("Pais:");
					lblpais.setBounds(105, 220, 110, 25);
					this.add(lblpais);
				}
				{
					textFieldpais = new JTextField();
					textFieldpais.setBounds(258, 220, 119, 26);
					textFieldpais.setSize(180, 26);
					this.add(textFieldpais);
				}
				{
					lblpiso = new JLabel();
					lblpiso.setText("Piso:");
					lblpiso.setBounds(105, 260, 110, 25);
					this.add(lblpiso);
				}
				{
					textFieldpiso = new JTextField();
					textFieldpiso.setBounds(258, 260, 119, 26);
					textFieldpiso.setSize(180, 26);
					this.add(textFieldpiso);
				}
				{
					lbldepartamento = new JLabel();
					lbldepartamento.setText("Departamento:");
					lbldepartamento.setBounds(105, 300, 110, 25);
					this.add(lbldepartamento);
				}
				{
					textFielddepartamento = new JTextField();
					textFielddepartamento.setBounds(258, 300, 119, 26);
					textFielddepartamento.setSize(180, 26);
					this.add(textFielddepartamento);
				}
				{
					lblentreCalle1 = new JLabel();
					lblentreCalle1.setText("Entre calle 1:");
					lblentreCalle1.setBounds(105, 340, 110, 25);
					this.add(lblentreCalle1);
				}
				{
					textFieldentreCalle1 = new JTextField();
					textFieldentreCalle1.setBounds(258, 340, 119, 26);
					textFieldentreCalle1.setSize(180, 26);
					this.add(textFieldentreCalle1);
				}
				{
					lblentreCalle2 = new JLabel();
					lblentreCalle2.setText("Entre calle 2:");
					lblentreCalle2.setBounds(105, 380, 110, 25);
					this.add(lblentreCalle2);
				}
				{
					textFieldentreCalle2 = new JTextField();
					textFieldentreCalle2.setBounds(258, 380, 119, 26);
					textFieldentreCalle2.setSize(180, 26);
					this.add(textFieldentreCalle2);
				}
				{
					lbllocalidad = new JLabel();
					lbllocalidad.setText("Localidad:");
					lbllocalidad.setBounds(105, 420, 110, 25);
					this.add(lbllocalidad);
				}
				{
					textFieldlocalidad = new JTextField();
					textFieldlocalidad.setBounds(258, 420, 119, 26);
					textFieldlocalidad.setSize(180, 26);
					this.add(textFieldlocalidad);
				}
				{
					lblprovincia = new JLabel();
					lblprovincia.setText("Provincia:");
					lblprovincia.setBounds(105, 460, 110, 25);
					this.add(lblprovincia);
				}
				{
					textFieldprovincia = new JTextField();
					textFieldprovincia.setBounds(258, 460, 119, 26);
					textFieldprovincia.setSize(180, 26);
					this.add(textFieldprovincia);
				}
				{
					lblcodigoPostal = new JLabel();
					lblcodigoPostal.setText("Cod. postal:");
					lblcodigoPostal.setBounds(105, 500, 110, 25);
					this.add(lblcodigoPostal);
				}
				{
					textFieldcodigoPostal = new JTextField();
					textFieldcodigoPostal.setBounds(258, 500, 119, 26);
					textFieldcodigoPostal.setSize(180, 26);
					this.add(textFieldcodigoPostal);
				}
				{
					lbllatitud = new JLabel();
					lbllatitud.setText("Latitud:");
					lbllatitud.setBounds(105, 540, 110, 25);
					this.add(lbllatitud);
				}
				{
					textFieldlatitud = new JTextField();
					textFieldlatitud.setBounds(258, 540, 119, 26);
					textFieldlatitud.setSize(180, 26);
					this.add(textFieldlatitud);
				}
				{
					lbllongitud = new JLabel();
					lbllongitud.setText("Longitud:");
					lbllongitud.setBounds(105, 580, 110, 25);
					this.add(lbllongitud);
				}
				{
					textFieldlongitud = new JTextField();
					textFieldlongitud.setBounds(258, 580, 119, 26);
					textFieldlongitud.setSize(180, 26);
					this.add(textFieldlongitud);
				}
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	private void clearFields() {
		
		textNombre.setText("");
		textFieldnumeroSucursal.setText("");
		textFielid.setText("");
		textFieldcalle.setText("");
		textFieldnumero.setText("");
		textFieldpais.setText("");
		textFieldpiso.setText("");
		textFielddepartamento.setText("");
		textFieldentreCalle1.setText("");
		textFieldentreCalle2.setText("");
		textFieldlocalidad.setText("");
		textFieldprovincia.setText("");
		textFieldcodigoPostal.setText("");
		textFieldlatitud.setText("");
		textFieldlongitud.setText("");
	}
	
	private boolean guardarSucursal() {
		boolean result = true;
		
		String nombre = textNombre.getText();
		Integer numeroSucursal = Integer.parseInt(textFieldnumeroSucursal.getText());
		String id = textFielid.getText();
		String calle = textFieldcalle.getText();
		String numero = textFieldnumero.getText();
		String pais = textFieldpais.getText();
		String piso = textFieldpiso.getText();
		String departamento = textFielddepartamento.getText();
		String entreCalle1 = textFieldentreCalle1.getText();
		String entreCalle2 = textFieldentreCalle2.getText();
		String localidad = textFieldlocalidad.getText();
		String provincia = textFieldprovincia.getText();
		String codigoPostal = textFieldcodigoPostal.getText();
		String latitud = textFieldlatitud.getText();
		String longitud = textFieldlongitud.getText();
		
		SucursalDTO sucursalDTO = new SucursalDTO(id, numeroSucursal, nombre, calle,numero, pais, piso, departamento, entreCalle1, entreCalle2, localidad, provincia, codigoPostal, latitud, longitud);
		

		try {
			BusinessDelegate.getInstance().altaSucursal(sucursalDTO);
		} catch (RemoteException e) {
			result = false;
			e.printStackTrace();
		} catch (ServiceException e) {
			result = false;
			e.printStackTrace();
		}
		return result;
	}
	
	public void showPanel() {
		final JFrame mainFrame = new JFrame();
		mainFrame.setTitle("Nueva Sucursal");
		mainFrame.getContentPane().add(this);
		mainFrame.setPreferredSize(new java.awt.Dimension(550, 730));
		mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		mainFrame.pack();
		mainFrame.setLocationRelativeTo(null);
		mainFrame.setVisible(true);
	}
	
	private void notificarMensaje(String mensaje) {
		Contexto.displayFeedbackMessage(AltaSucursal.this, mensaje);
	}
	
	private void notificarError(String error) {
		Contexto.displayErrorMessage(AltaSucursal.this,error);
	}
	
	public static void main(String[] args) {
		AltaSucursal as = new AltaSucursal();as.showPanel();
	}
			
		

}
